perm filename MIXFIL[MIX,SYS] blob
sn#020810 filedate 1972-02-01 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 This subroutine is used to get file information
00008 ENDMK
⊗;
COMMENT ⊗ This subroutine is used to get file information
from the user. All blanks are suppressed. Syntax
is as follows:
<filename>.<extension>[proj,prog]
with <extension> and [ppn] optional
Called by "FINFO"
⊗
FINFI2: SETZM BLK ;*RES* ENTER TO PICK UP NAME
SETZM BLK+1 ;*RES* RESCANNED BY RESCN
SETZM BLK+2
SETZM BLK+3
MOVE 11, [POINT 6, BLK] ; INIT POINTER FOR FILENAME
MOVEI 12, 6 ; SET UP COUNTER IN 12
MOVE 10,RECHAR ;*RES* GET RESCANNED CHARACTER
JRST FINFI3 ;*RES* WE ALREADY KNOW NON-BLANK
OPDEF FINFO [PUSHJ P, .]
SETZM BLK ; INITIALIZE BLK
SETZM BLK+1
SETZM BLK+2
SETZM BLK+3
MOVE 11, [POINT 6, BLK] ; INIT POINTER FOR FILENAME
MOVEI 12, 6 ; SET UP COUNTER IN 12
INCHWL 10 ; READ FIRST CHAR OF LINE
SKIPA
FINFLP: INCHRW 10 ; NEXT CHAR
CAIN 10, 40 ; <BLANK> → KEEP READING
JRST .-2
CAIN 10, 15 ; C-R → ALL DONE
JRST FINDON
FINFI3: CAIN 10, "[" ; "[" → PPN COMES NEXT
JRST PPN
CAIE 10, "." ; "." → EXTENSION COMES NEXT
JRST .+4
MOVE 11, [POINT 6, BLK+1] ; FIX POINTER FOR EXTENSION
MOVEI 12, 3 ; SET COUNTER TO 3
JRST FINFLP
TRZN 10, 100 ;*RES* CONVERT TO SIXBIT BY
TRZA 10, 40 ; REPLACING BIT 30 BY BIT 29
TRO 10, 40
SOJL 12, FINFLP ; N ← N-1
IDPB 10, 11 ; N≥0 → PUT INTO BLK
JRST FINFLP ; BACK FOR MORE CHARS
PPN: SETZ 13, ; 13 IS A SWITCH FOR PROJ OR PROG
MOVEI 12, 3 ; SET UP COUNTER
SETZ 11, ; 11 WILL CONTAIN 3 SIXBIT CHARS
PPNLP: INCHRW 10 ; READ CHAR
CAIN 10, 40 ; <BLANK> → KEEP READING
JRST .-2
CAIN 10, 15 ; C-R → ALL DONE
JRST PLPDON
CAIN 10, "," ; "," → PROJ DONE
JRST PLPDON
CAIN 10,"]" ;*RES* "]" → PROG DONE
JRST PLPDON ;*RES*
TRZN 10, 100 ;*RES* CONVERT TO SIXBIT
TRZA 10, 40
TRO 10, 40
SOJL 12, PPNLP ; N←N-1; <0 → NO MORE INTO 11
LSH 11, 6 ; SHIFT 11 AND
ADD 11, 10 ; ADD ON CHAR FROM 10
JRST PPNLP ; BACK FOR MORE
PLPDON: JUMPG 13, .+4 ; 13>0 → PROGRAMMER NAME
HRLZM 11,BLK+3 ;*RES* PUT PROJ INTO LEFT HALF
MOVEI 13, 1 ; SO GET PROG NEXT
JRST PPN+1
HRRM 11,BLK+3 ;*RES* PUT PROG INTO RIGHT HALF
FINDON: INCHRW 10 ; READON UNTIL LINE-FEED
CAIE 10, 12
JRST .-2
POPJ P,
BLK: 0 ; WILL CONTAIN FILENAME
0 ; WILL CONTAIN EXTENSION
0
0 ; WILL CONTAIN PROJ,PROG